iT邦幫忙

2026 iThome 鐵人賽

DAY 14
0

該說說.container其它標籤的作用,以下是a2a-proxy.container的內容:

[Unit]
Description=Proxy on SUSE NGINX
After=network-online.target a2a-net-network.service a2a-web.service a2a-api.service a2a-auth.service a2a-batch.service
Wants=network-online.target a2a-web.service a2a-api.service a2a-auth.service a2a-batch.service
Requires=a2a-net-network.service

[Container]
Image=localhost/a2a-proxy:20260519-01
ContainerName=a2a-proxy
PublishPort=8088:80
PublishPort=8443:8443
Network=a2a-net.network
VolatileTmp=true
Volume=/home/appuser/nginx/nginx.conf:/etc/nginx/nginx.conf:ro,Z
Volume=/home/appuser/a2a-log/proxy:/var/log/nginx:Z
Volume=/home/appuser/a2a-proxy/certs:/etc/nginx/certs:ro,Z

[Service]
Restart=no
TimeoutStartSec=900

[Install]
WantedBy=default.target

[Unit]及[Install]下的default.target都屬Linux新核心systemd的概念範圍,後面的篇幅應該會提到。
在[Unit]常用的標籤如下:

  • After:我在這些服務啟動後才啟動,比如a2a-web、a2a-api、a2a-auth與a2a-batch,主要控制啟動順序,這些服務啟動成功或失敗並不影響自己的啟動。
  • Wants:則是希望能啟動這些服務,比如a2a-web沒啟動成功,還沒開門營業,a2a-proxy這個物流去敲門送貨,當然會失敗。藉由這個設定請systemd務必啟動a2a-web。
  • Requires:這個就有實質依賴性,若a2a-net沒啟動成功,相當於a2a-proxy這個物流沒車可派,就不會啟動a2a-proxy這個服務。
  • Description:服務描述,使用systemctl --user status a2a-proxy會看到。
    其它標籤尚有Requisite、BindsTo、PartOf、Upholds、Conflicts、Before等。可以說是圍繞著systemd核心在打轉:
  • Before:與 After相反,只控制順序。例如 Before=a2a-web.container 表示自己先啟動。
  • Requisite:比 Requires更嚴格一點;如果對方目前沒有 active,自己直接啟動失敗,但不會主動把對方啟動起來。
  • BindsTo:比 Requires更強。對方如果消失或被停止,自己也會跟著停止。適合生命週期必須綁在一起的服務。
  • PartOf:自己是對方的一部分。對方被 stop 或 restart 時,自己會跟著 stop/restart;但單純啟動對方不一定會自動啟動自己。
  • Conflicts:兩個 unit 不允許同時 active。啟動其中一個時,另一個會被停止。
  • Upholds:只要自己 active,就會持續確保指定 unit 也保持 active;如果指定 unit 掛掉,systemd 會再把它拉起來。
  • Documentation:放 man page 或文件連結,方便維運查詢。

上一篇
用Spring-Security處理CORS
下一篇
.container的Service標籤
系列文
Podman Quadlet-容器服務化(在單體系統到微服務之間)15
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言